.\"   $Id: polardupablexpr.3,v 1.1 2002/03/18 11:06:16 ludo Exp $
.\" @(#)polardupablexpr.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
.TH POLARDUPABLEXPR 3 "October 1, 1997" "ASIM/LIP6" "ABL FUNCTIONS"
.SH NAME
polardupablexpr \- duplicates an expression and moves down the inverters.

.so man1/alc_origin.1
.SH SYNOPSIS
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include "abl101.h"
chain_list \(**polardupablexpr( Expr, Polar )
  chain_list \(**Expr;
  int         Polar;
.ft R
.fi
.SH PARAMETERS
.TP 20
\fIExpr\fP
Expression to modify.
.TP
\fIPolar\fP
Expression polarity.
.SH DESCRIPTION
\fBpolardupablexpr\fP modifies \fIExpr\fP by moving down the inverters to the atomic level.
\fBpolardupablexpr\fP applies the Morgan's laws. If \fIPolar\fP is equal to ABL_POLAR_NEGATIVE 
the function returns the modified expression after having complemented it.
.SH RETURN VALUE
\fBpolardupablexpr\fP returns the modified expression.
.SH EXAMPLE
.ta 3n 6n 9n 12n 15n 18n 21n
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include "abl101.h"
  chain_list \(**Expr1;
  chain_list \(**Expr2;
  Expr1 = createabloper( ABL_NOT );
  Expr2 = createabloper( ABL_NOT );
  addablhexpr( Expr1, createablatom( "a" ) );
  addablhexpr( Expr2, Expr1 );
  Expr1 = polardupablexpr( Expr2, ABL_POLAR_POSITIVE );
  /* displays  a */
  viewablexpr( Expr1, ABL_VIEW_VHDL );
.ft R
.fi
.SH SEE ALSO
.BR abl (1)


.so man1/alc_bug_report.1

